package 栈和堆;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Stack;

public class Zhan {
    public static void main(String[] args) {
        int i=1;
        new Zhan().test1(i);
        System.out.println(i);
    }
    void test1(int i){
        //输出1123，和C语言的栈不一样，C语言输出的是4321

//        System.out.println("%d%d%d%d",i,i++,i++,i++);println不支持打印多个变量，下面两种支持多个变量的格式化输出
        System.out.printf("%d%d%d%d\n",i,i++,i++,i++);//格式化输出
        System.out.format("%d%d\n", i,++i);
    }

    /**
     * 栈的基本使用
     *
     * 栈的重点应该在于 栈先进后出的思想，以及对 入栈(push)，出栈(pop) 两种操作的运用。
     * 解决相关括号匹配，迷宫求解，表达式求值等问题，都是一个不错的选择。
     *
     * 序号	方法描述
     * 1	boolean empty()  测试堆栈是否为空。
     * 2	Object peek( )   查看堆栈顶部的对象，但不从堆栈中移除它。
     * 3	Object pop( )    移除堆栈顶部的对象，并作为此函数的值返回该对象。
     * 4	Object push(Object element)  把项压入堆栈顶部。
     * 5	int search(Object element) 返回对象在堆栈中的位置，以 1 为基数。
     */
    void test2(){
        //创建栈
        Stack<Integer> stack = new Stack<>();//声明一个栈(基于Vector动态数组)
        Deque<Character> st = new LinkedList<Character>();//声明一个栈(基于LinkedList双向链表)

    }
}
